/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package evaluate.curriculum;

import system.general.Exc;
import system.general.Logged;
import system.general.Message;
import system.general.Persistencia;
import java.sql.SQLException;
import java.util.*;
import javax.el.ELContext;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author emojica
 */
@ManagedBean(name = "curriculum_evaluation")
@RequestScoped
public class Main extends Beans {

    //Variables de importación General
    Logged logged;
    private Persistencia persistencia = new Persistencia();
    private Message msg = new Message();
    //Variables de importación otros modulos
    //Variables del modulo
    private Find curriculumdetalleFind = new Find();
    private List<Beans> curriculumdetalleList = new ArrayList<>();
    private Respuestas respuestas = new Respuestas();
    //Variables locales
    private String sql;
    private Map<String, String> map = new LinkedHashMap<>();

    public Main() throws Exc, SQLException, Exception {
        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
        logged = (Logged) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "logged");
        load();
    }

    private void load() throws Exc, SQLException, Exception {
        setId_solicitud(logged.getMasterId());
        respuestas.cargarTodasRespuestas(getId_solicitud());
    }

    public void insert() {
        try {
            //Verifica si se ha seleccionado un registro
            map.clear();
            map.put("id_solicitud = " + getId_solicitud(), " ");

            //Verifica si el registro existe, de lo contrario lo inserta
            if (curriculumdetalleFind.byExist(map)) {
                delete();
            }

            for (int i = 1; i < respuestas.preguntaObs.length; i++) {

                setIdl_pregunta(Integer.parseInt(respuestas.getPregunta1Opc().toString().substring(0, 2)));
                setIdl_respuesta(Integer.parseInt(respuestas.getPregunta1Opc().toString().substring(2)));
                setObsevacion(respuestas.getPregunta1Obs());
                sql = "INSERT INTO public.curriculum_evaluacion (id_solicitud, idl_pregunta, idl_respuesta,observacion) "
                        + "VALUES (" + getId_solicitud() + ", " + getIdl_pregunta() + ",  " + getIdl_respuesta() + "," + getObsevacion() + ")";

                //Inserta los registros
                persistencia.executeUpdate(sql);

            }
        } catch (Exc ex) {
            msg.showMsg(namePackage(), "system", ex.getIdError());
        } catch (SQLException ex) {
            msg.showErr(namePackage(), "sql", ex);
        } catch (Exception ex) {
            msg.showErr(namePackage(), "java", ex);
        } finally {
        }
    }

    public void delete() {
        try {
            //Elimina el resgistro por el id_persona
            deleteById(logged.getDetailId());
        } catch (Exc ex) {
            msg.showMsg(namePackage(), "system", ex.getIdError());
        } catch (SQLException ex) {
            msg.showErr(namePackage(), "sql", ex);
        } catch (Exception ex) {
            msg.showErr(namePackage(), "java", ex);
        } finally {
        }
    }

    public void deleteById(int id) throws Exc, SQLException, Exception {
        //Elimina los detalle por id
        sql = "DELETE FROM public.curriculum_evaluacion "
                + "WHERE id_solicitud = " + id;
        persistencia.executeUpdate(sql);
    }

    public Respuestas getRespuestas() {
        return respuestas;
    }

    private String namePackage() {
        Package pack = this.getClass().getPackage();
        return pack.getName();
    }
}
